package com.ingesoft.client;

import java.util.ListResourceBundle;

import org.apache.catalina.startup.SetAllPropertiesRule;

import com.google.gwt.user.client.ui.RootPanel;
import com.google.gwt.user.client.ui.TextBox;
import com.smartgwt.client.types.Alignment;
import com.smartgwt.client.types.ListGridFieldType;
import com.smartgwt.client.types.TitleOrientation;
import com.smartgwt.client.types.VerticalAlignment;
import com.smartgwt.client.widgets.Canvas;
import com.smartgwt.client.widgets.Window;
import com.smartgwt.client.widgets.form.DynamicForm;
import com.smartgwt.client.widgets.form.fields.ButtonItem;
import com.smartgwt.client.widgets.form.fields.TextAreaItem;
import com.smartgwt.client.widgets.form.fields.events.ClickEvent;
import com.smartgwt.client.widgets.form.fields.events.ClickHandler;
import com.smartgwt.client.widgets.grid.ListGrid;
import com.smartgwt.client.widgets.grid.ListGridField;
import com.smartgwt.client.widgets.grid.events.CellDoubleClickEvent;
import com.smartgwt.client.widgets.grid.events.CellDoubleClickHandler;
import com.smartgwt.client.widgets.grid.events.CellSavedEvent;
import com.smartgwt.client.widgets.grid.events.CellSavedHandler;
import com.smartgwt.client.widgets.layout.HStack;
import com.smartgwt.client.widgets.layout.VLayout;
import com.smartgwt.client.widgets.layout.VStack;
import com.smartgwt.client.widgets.tab.Tab;

public class TabObjetivoTerminal extends Tab {

	private ViewController controller;

	private DynamicForm formObjGeneral;
	private TextAreaItem txtObjGeneral;

	private ListGrid tableObjTerminales;
	private ListGridField fieldObjTerminales;

	private Window winTerminal;

	private TextAreaItem txtTerminal;

	private ButtonItem btnCreaFila;

	private ButtonItem btnEditarTerminal;

	public TabObjetivoTerminal(ViewController controller)
	{

		this.controller=controller;

		txtObjGeneral = new TextAreaItem();	
		txtObjGeneral.setLength(500);
		txtObjGeneral.setHeight(100);
		txtObjGeneral.setWidth(650);
		txtObjGeneral.setLeft(50);
		txtObjGeneral.setTitleOrientation(TitleOrientation.TOP);
		txtObjGeneral.setTitle("Objetivo General");

		formObjGeneral=new DynamicForm();
		formObjGeneral.setFields(txtObjGeneral);
		formObjGeneral.setAlign(Alignment.CENTER);

		fieldObjTerminales=new ListGridField("objTerminal", "Objetivo Terminal", 635);
		fieldObjTerminales.setAlign(Alignment.CENTER);

		tableObjTerminales=new ListGrid();
		tableObjTerminales.setFields(fieldObjTerminales);

		tableObjTerminales.setFixedRecordHeights(false);
		tableObjTerminales.setWrapCells(true);
		tableObjTerminales.setWidth(650);
		tableObjTerminales.setHeight(350);
		tableObjTerminales.setLeft("25%");
		tableObjTerminales.setTop(130);
		tableObjTerminales.setTitle("OBJETIVOS TERMINALES");
		tableObjTerminales.setTooltip("Desde aqui puede adicionar y modificar un Objetivo Terminal.");


		btnCreaFila=new ButtonItem("Agregar");


		DynamicForm form=new DynamicForm();
		form.setDefaultWidth(850);
		form.setFields(btnCreaFila);
		form.setLayoutAlign(Alignment.CENTER);

		VStack ordenForma=new VStack();
		ordenForma.addMember(form);
		ordenForma.setWidth(70);
		ordenForma.setDefaultLayoutAlign(Alignment.CENTER);
		ordenForma.setLayoutLeftMargin(300);
		ordenForma.setLayoutRightMargin(5);
		ordenForma.setLayoutTopMargin(1);


		VStack orden=new VStack(5);

		orden.addMember(formObjGeneral);
		orden.addMember(tableObjTerminales);
		orden.addMember(ordenForma);
		orden.setWidth(850);
		orden.setHeight(550);
		orden.setLayoutAlign(Alignment.CENTER);
		orden.setLeft("25%");
		orden.setLayoutLeftMargin(100);
		orden.setLayoutTopMargin(40);
		setTitle("Objetivo Terminal");
		setPane(orden);

		abrirVentana();
		crearFila();
		
	}

	public void crearFila()
	{

		btnCreaFila.addClickHandler(new ClickHandler() {

			@Override
			public void onClick(ClickEvent event) {
				// TODO Auto-generated method stub

				tableObjTerminales.startEditingNew();

			}
		});

	}

	public void crearTerminall()
	{
		tableObjTerminales.addCellSavedHandler(new CellSavedHandler() {

			@Override
			public void onCellSaved(CellSavedEvent event) {
				// TODO Se invoca el metodo para crear un nuevo terminal

			}
		});

	}

	public void abrirVentana()
	{
		tableObjTerminales.addCellDoubleClickHandler(new CellDoubleClickHandler() {

			@Override
			public void onCellDoubleClick(CellDoubleClickEvent event) {
				// TODO Auto-generated method stub
				int filaNum=event.getRowNum();
				mostrarVentanaTerminal(filaNum);

			}
		});
	}

	public void mostrarVentanaTerminal(int filaNum)
	{

		winTerminal=new Window();
		winTerminal.setWidth(540);
		winTerminal.setHeight(300);
		winTerminal.setTitle("Objetivo Terminal");
		winTerminal.centerInPage();
		winTerminal.setShowMinimizeButton(false);
		winTerminal.setIsModal(true);

		txtTerminal=new TextAreaItem();
		txtTerminal.setTitle("Contenido:");
		txtTerminal.setTitleOrientation(TitleOrientation.TOP);
		txtTerminal.setWidth(498);
		txtTerminal.setHeight(200);

		btnEditarTerminal=new ButtonItem("Editar");
		String terminal=tableObjTerminales.getSelectedRecord().getAttributeAsString("objTerminal");
		txtTerminal.setValue(terminal);

		DynamicForm formTxt=new DynamicForm();
		formTxt.setDefaultWidth(500);
		formTxt.setFields(txtTerminal);

		DynamicForm formEditar=new DynamicForm();
		formEditar.setDefaultWidth(70);
		formEditar.setFields(btnEditarTerminal);

		HStack ordenFormas=new HStack();
		ordenFormas.addMember(formEditar);
		ordenFormas.setDefaultLayoutAlign(Alignment.CENTER);
		ordenFormas.setLayoutLeftMargin(200);
		ordenFormas.setLayoutRightMargin(5);
		ordenFormas.setLayoutTopMargin(4);

		VStack ordenVentana=new VStack(5);
		ordenVentana.addMember(formTxt);
		ordenVentana.addMember(ordenFormas);
		ordenVentana.setDefaultWidth(490);
		ordenVentana.setDefaultLayoutAlign(Alignment.CENTER);
		ordenVentana.setLayoutLeftMargin(5);
		ordenVentana.setLayoutRightMargin(5);
		ordenVentana.setLayoutTopMargin(5);

		winTerminal.addItem(ordenVentana);
		winTerminal.show();

		editarTerminal(filaNum);
	}

	public void editarTerminal(final int filaNum)
	{
		btnEditarTerminal.addClickHandler(new ClickHandler() {

			@Override
			public void onClick(ClickEvent event) {
				// TODO Invoca al metodo de editar objetivo terminal.
				// Obtengo el valor selecciona para tener referencia del objetivo terminal viejo
				//  viejo con el fin de obtener el id 


				String terminal=txtTerminal.getDisplayValue();

				tableObjTerminales.setEditValue(filaNum, "objTerminal", terminal);
				tableObjTerminales.startEditing();
			}
		});
	}

}
